#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
@FileName  :utils.py 
@desc      :
@Author    :Young
@IDE       :PyCharm
@Time      :2021/8/5 0005 9:57
'''

#一是产生token发送邮件，
#二是处理验证连接，采用base64进行加密，采用itsdangrous进行序列化

from itsdangerous import URLSafeTimedSerializer as utsr   #URLSafeTimedSerializer将其他类型转化为字符串
import base64
from django.conf import settings as django_settings

class Token:  #自定义模块
    def __init__(self, security_key):  #security_key 盐值
        self.security_key = security_key
        self.salt = base64.encodebytes(security_key.encode('utf8'))   #将非ASCILL码字符转化为ASCILL码字符，salt是用来做加密的随机字符串

    def generate_validate_token(self, uid):  #生成一个Token
         serializer = utsr(self.security_key)  #以security_key为基准产生一个序列化对象  （加密）
         return serializer.dumps(uid, self.salt) #dumps产生一个字符串  字符串分三部分 uid 时间戳  加密值

    def confirm_validate_token(self, token, expiration=3600):  #验证  （解密）
        serializer = utsr(self.security_key)
        return serializer.loads(token, salt=self.salt,max_age=expiration)  #max_age是过期时间，loads是做序列化的

    def remove_validate_token(self, token):  #过期之后将token移除
         serializer = utsr(self.security_key)
         print(serializer.loads(token, salt=self.salt))
         return serializer.loads(token, salt=self.salt)

token_confirm = Token(django_settings.SECRET_KEY) # 定义为全局变量
